#ifndef __DEV_OUTPUT_H__
#define __DEV_OUTPUT_H__

#include "device_def.h"

#ifdef __cplusplus
extern "C" {
#endif

// OUTPUT 设备结构体
DEVICE_CONTEXT_DECLARE
(
    Dev_Output,

    struct {
        /**
         * @brief 写输出设备的状态
         * @param u8State @see IO_STATUS_LOW/IO_STATUS_HIGH
         */
        void (*pfnWrite)(uint8_t u8State);
    },

    struct {
        uint8_t     u8Active;       // 有效状态
        uint8_t     u8State;        // 当前状态
        uint16_t    u16Reserved;    // 保留字段
    }
);

// OUTPUT 设备大小
#define DEV_OUTPUT_SIZE sizeof(Dev_Output_t)

// OUTPUT 设备控制字
enum {
    OUTPUT_CMD_ACTIVE = 0U,     // 使能输出控制命令
    OUTPUT_CMD_INACTIVE,        // 失能输出控制命令
    OUTPUT_CMD_TOGGLE,          // 切换输出状态控制命令
};

#ifdef __cplusplus
}
#endif

#endif /* __DEV_OUTPUT_H__ */
